package com.xunjing.common.core.utils;

import com.xunjing.common.core.web.service.EmailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;

import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.File;


/**
 * @Author ZYT
 * @Date 2024-03-22 9:44
 * @Version 1.0
 * @Describe 邮箱发送
 */
@Service
@Slf4j
public class EmailUtils implements EmailService {

        /**
         * 简单文本邮件
         *
         * @param mailSender
         * @param to         收件人
         * @param subject    主题
         * @param content    内容
         */
        public  void sendSimpleMail(JavaMailSender mailSender, String from, String to, String subject, String content) {
            //创建SimpleMailMessage对象
            SimpleMailMessage message = new SimpleMailMessage();
            //邮件发送人
            message.setFrom(from);
            //邮件接收人
            message.setTo(to);
            //邮件主题
            message.setSubject(subject);
            //邮件内容
            message.setText(content);
            //发送邮件
            mailSender.send(message);
        }

        /**
         * html邮件
         * @param to 收件人,多个时参数形式 ："xxx@xxx.com,xxx@xxx.com,xxx@xxx.com"
         * @param subject 主题
         * @param content 内容
         */
        public void sendHtmlMail(JavaMailSender mailSender,String from,String to, String subject, String content) {
            //获取MimeMessage对象
            MimeMessage message = mailSender.createMimeMessage();
            MimeMessageHelper messageHelper;
            try {
                messageHelper = new MimeMessageHelper(message, true);
                //邮件发送人
                messageHelper.setFrom(from);
                //邮件接收人,设置多个收件人地址
                InternetAddress[] internetAddressTo = InternetAddress.parse(to);
                messageHelper.setTo(internetAddressTo);
                //messageHelper.setTo(to);
                //邮件主题
                message.setSubject(subject);
                //邮件内容，html格式
                messageHelper.setText(content, true);
                //发送
                mailSender.send(message);
                //日志信息
                log.info("邮件已经发送。");
            } catch (Exception e) {
                log.error("发送邮件时发生异常！", e);
            }
        }

        /**
         * 带附件的邮件
         * @param to 收件人
         * @param subject 主题
         * @param content 内容
         * @param filePath 附件
         */
        public void sendAttachmentsMail(JavaMailSender mailSender,String from,String to, String subject, String content, String filePath) {
            MimeMessage message = mailSender.createMimeMessage();
            try {
                MimeMessageHelper helper = new MimeMessageHelper(message, true);
                helper.setFrom(from);
                helper.setTo(to);
                helper.setSubject(subject);
                helper.setText(content, true);

                FileSystemResource file = new FileSystemResource(new File(filePath));
                String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
                helper.addAttachment(fileName, file);
                mailSender.send(message);
                //日志信息
                log.info("邮件已经发送。");
            } catch (Exception e) {
                log.error("发送邮件时发生异常！", e);
            }
        }

}
